今天也要讓大家來練習,只不過今天的東西會稍微難想一點,所以今天一個題目而已。那我們就開始吧
今天要讓大家來練習的是考拉茲猜想,這是在1930年代,德國漢堡大學的學生考拉茲,研究任何正整數用了某些公式,最後結果都會變成1,那我來說明一下那些公式。首先先設定一個數字n,假如n是偶數,就要除2; 假如n是奇數,就要乘以3加1。之後會得到一個新的數字,然後繼續再用剛剛的算法一直重複計算,之後一定會變成1。
例如:
13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1
再來我要介紹考拉茲生命週期,從以上的例子來看,13的考拉茲生命週期是10,因為包括13到1的數字有10個。同理,8的考拉茲生命週期就是4。
再來是我們今天要練習的內容,就是先問使用者n是多少,然後求n的考拉茲生命週期。
n=int(input())
a=1
while True:
if n==1:
break
elif n%2==0:
n=n/2
a=a+1
elif n%2==1:
n=3*n+1
a=a+1
print(a)
首先一開就是先讓使用者輸入,再來第二行是考拉茲生命週期,由於n本身也會算是週期的一個數字,例如1的考拉茲生命週期是1,所以就先把a設為1。再來是迴圈的部分,由於這是未知週期的迴圈,所以我使用while。之後是迴圈裏面,那首先我先判斷n是否為1,是就停止迴圈。然後就是判斷奇數偶數,然後每次數字變換a就會加一。最後打印。